const app = getApp();
const log = require('./log');
const TAG_NAME = "VR-GETUSERINFO";

/**
 * 获取用户权限
 * @param {*} enterType 入口 0 小程序 1 卡片
 * @param {*} userId 用户id
 * @param {*} agentId id
 * @param {*} serviceUrl 地址
 */
export async function getUserInfo(enterType, userId, agentId, serviceUrl) {
  console.log("获取用户权限", enterType, userId, agentId, serviceUrl)
  await new Promise((resolve) => {
    wx.getUserProfile({
      desc: '用于展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log('获取用户信息', res.userInfo)
        const {
          nickName,
          avatarUrl
        } = res.userInfo;
        app.globalData.userDetailInfo = {
          nickName,
          avatarUrl
        };
        // 保存用户信息
        setUserInfo(nickName, avatarUrl, userId, agentId, serviceUrl);
        resolve()
      },
      fail: (res) => {
        app.globalData.userDetailInfo = null;
        console.log('用户拒绝授权', res)
        resolve()
      }
    })
  })
};

/**
 * 更新后台用户存储信息
 * @param {*} name 用户昵称
 * @param {*} avater 用户头像
 * @param {*} userId 用户id
 * @param {*} agentId id
 * @param {*} serviceUrl 地址
 */
function setUserInfo(name, avater, userId, agentId, serviceUrl) {
  let formData = {
    userId,
    userName: encodeURIComponent(name),
  };
  if (agentId) {
    formData.agentId = agentId;
  }
  wx.downloadFile({
    url: avater, // 头像链接
    success(res) {
      // 只要服务器有响应数据，就会把响应内容写入文件并进入 success 回调，业务需要自行判断是否下载到了想要的内容
      if (res.statusCode === 200) {
        wx.uploadFile({
          url: serviceUrl + '/user/add', //仅为示例，非真实的接口地址
          filePath: res.tempFilePath,
          name: 'file',
          formData: formData,
          success(res) {
            log.debug(TAG_NAME, "保存昵称和头像成功", res.data)
          },
          fail(res) {
            log.debug(TAG_NAME, "", res)
            wx.showToast({
              icon: 'none',
              title: '获取微信头像失败',
              duration: 2000,
            });
          }
        })
      }
    },
    fail(res) {
      log.error(TAG_NAME, "下载微信头像失败", res)
      // wx.showToast({
      //   icon: 'none',
      //   title: '获取微信头像失败',
      //   duration: 2000,
      // });
    }
  })
}